package 回文排列;

import java.util.HashSet;
import java.util.Set;

class Solution
{
    public boolean canPermutePalindrome(String s)
    {
        //判断字符串中个字符出现的次数，是否是一个是出现奇数次，其余0-n个字符是偶数个字符
        //找到第一个出现奇数次的字符
        if (s==null||s.length()==0)
            return false;
        int count=0;
        int temp =s.charAt(0);
        int cnt=0;
        for(int i=1;i<s.length();i++)
        {
            temp ^=s.charAt(i);//char类型可以直接亦或
            if (s.charAt(0)==s.charAt(i))
                cnt++;
        }
        for(int i=0;i<s.length();i++)
        {
            if(temp==(byte)s.charAt(i))
            {
                count++;
            }
        }
        if(count%2==1||(temp==0&&cnt>0))//偶数个一样的 aa aaaa adbg
            return true;
        else
            return false;
    }
    public boolean canPermutePalindrome1(String s) {
        if(s == null){
            return false;
        }
        char[] chars = s.toCharArray();
        Set<Character> set = new HashSet<>();
        for(char c : chars){
            if(set.contains(c)){
                set.remove(c);
            }else{
                set.add(c);
            }
        }
        return set.size() <= 1;
    }

    public static void main(String[] args)
    {
        Solution solution = new Solution();
        System.out.println(solution.canPermutePalindrome("aa"));
    }
}
